package niuke;

/**
 * description:
 * author:张腾
 * date:2021-07-03
 */

/**
 * 有一个NxN整数矩阵，请编写一个算法，将矩阵顺时针旋转90度。
 *
 * 给定一个NxN的矩阵，和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。
 */
public class NC18 {
    public int[][] rotateMatrix(int[][] mat, int n) {
        // 先对角线旋转
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {
                int tmp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = tmp;
            }
        }
        //再水平旋转
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n / 2; j++) {
                int tmp = mat[i][j];
                mat[i][j] = mat[i][n-1-j];
                mat[i][n-1-j] = tmp;
            }
        }
        return mat;
    }
}
